/*
 【入门】二分查找满足条件的数
  题目描述
    请在一个有序不递减的数组中（数组中的值有相等的值），采用二分查找，
    找到第 1 个大于或等于元素 x 的位置，如果不存在，请输出 -1。

    请注意：本题要求出 q 个 x，每个 x 在数组找到第 1 个大于或等于 x 的元素的位置。
    例如: 有 6 个数，分别是：1 2 2 2 6 6，那么如果要求 3 个数：5 8 2，
          在数组中找到第 1 个大于或等于他们的位置，答案是：5 -1 2。
  输入
    第一行，一个整数 n，代表数组元素个数（n <= 10^5）
    第二行，n 个整数，用空格隔开，代表数组的 n 个元素（1 <= 数组元素的值 <= 10^8）
    第三行，一个整数 q，代表有要查询 q 个数（q <= 10^5）
    第四行，q 个整数，用空格隔开，代表查询的数（1 <= 要找的数 <= 10^8）
  输出
    按题意输出位置或者 -1。
  样例输入
    6
    1 2 2 2 6 6
    3
    5 8 2
  样例输出
    5 -1 2
*/

#include <bits/stdc++.h>

using namespace std;

int a[100005] = {};
int x;

int main() {
    int n;

    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }

    int q;
    cin >> q;
    for (int i = 1; i <= q; i++) {
        cin >> x;

        /*
          通过二分查找函数找出第一个大于或等于 x 的值的下标为 mi
          注意:
            1). lower_bound()/upper_bound() 函数的返回值为指针
            2). 使用二分查找函数前, 需要确保序列已经是 "从小到大的升序排列" 或 "有序不递减(中间有相等的值)"
        */
        int mi = lower_bound(a + 1, a + n + 1, x) - a;
        if (mi > n) {
            cout << -1 << " ";
        } else {
            cout << mi << " ";
        }

    }

    return 0;
}